package com.zto.sch.advance.dubbo.泛化调用;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;

import java.io.IOException;

public class ApiProvider {

    public static void main(String[] args) throws IOException {

        // 1.创建ServiceConfig实例
        ServiceConfig<GreetingService> serviceConfig = new ServiceConfig<GreetingService>();

        // 2.设置应用程序配置
        serviceConfig.setApplication(new ApplicationConfig("dubbo-provider"));

        // 3.设置服务注册中心信息
        RegistryConfig registryConfig = new RegistryConfig("zookeeper://127.0.0.1:2181");
        serviceConfig.setRegistry(registryConfig);

        // 4.设置接口与实现类
        serviceConfig.setInterface(GreetingService.class);
        serviceConfig.setRef(new GreetingServiceImpl());

        // 5.设置服务分组与版本
        // 在Dubbo中，"服务接口+服务分组+服务版本"唯一地确定一个服务，同一个服务接口可以有不同的版本以便服务升级等，
        // 另外每个服务接口可以属于不同分组，所以当调用方消费服务时一定要设置正确的分组与版本
        serviceConfig.setVersion("1.0.0");
        serviceConfig.setGroup("dubbo");

        // 6.设置线程池策略
        //HashMap<String, String> parameters = new HashMap<>();
        //parameters.put("threadpool", "mythreadpool");
        //serviceConfig.setParameters(parameters);

        // 7.导出服务
        serviceConfig.export();

        // 8.挂起线程，避免服务停止
        System.out.println("server is started");
        System.in.read();
    }
}